Parent Directory | Revision Log
Move sloppy to public.
// Copyright (c) 2008, Anari Demme // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // * Neither the names of any contributors nor the names of any organizations // affiliated with the contributors may be used to endorse or promote // products derived from this software without specific prior written // permissions. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT // LIABILITY, // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE // USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // $Id$ // Configuration variables. // NOTE: This server is only for use for this demonstration. Do not use this // server for any production purposes. I reserve the right to sabotage // your data in entertaining ways if you do. :) string site = "http://sloppydemo.appspot.com/"; key http_key; // Tests, one per row. // 1: type of request, 2: relative url, 3: expected return code, 4: expected // data (if appliccable) list tests = [ "GET", "nonono", 404, "", "DELETE", "nonono", 404, "", "PUT", "", 403, "", "GET", "", 403, "", "DELETE", "", 403, "", "GET", "new", 404, "", "PUT", "new", 201, "some data", "GET", "new", 200, "some data", "DELETE", "new", 200, "", "GET", "new", 404, "", "GET", "deepdir", 404, "", "GET", "deepdir/2/3/4/5/6/7/8", 404, "", "GET", "deepdir/2", 404, "", "PUT", "deepdir/2/3/4/5/6/7/8", 201, "a thing", "GET", "deepdir/2/3/4/5/6/7/8", 200, "a thing", "GET", "deepdir/2/3/4", 404, "", "PUT", "deepdir/2/3/4/5/6/7/9", 201, "another thing", "DELETE", "deepdir/2/3/4/5/6/7/8", 200, "", "GET", "deepdir/2/3/4/5/6/7/9", 200, "another thing", "DELETE", "deepdir", 404, "", "DELETE", "deepdir/", 200, "", "GET", "deepdir/2/3/4/5/6/7/9", 404, "" // add directory listing tests // add directory delete vs record delete // add delete record wh ile leaving directory tree intact ]; integer current_test = 0; integer failures = 0; integer warnings = 0; // This has no throttling so will easily hit the llHTTPRequest resouce // limitations if more tests are added, or its ran twice in succession. run_test() { if (llGetListLength(tests) == current_test * 4) { llWhisper(0, "Completed all tests. " + (string) warnings + " warnings; " + (string) failures + " failures."); return; } list test = llList2List(tests, current_test * 4, (current_test * 4) + 4); string req = llList2String(test, 0); string name = llList2String(test, 1); integer ret = llList2Integer(test, 2); string data = llList2String(test, 3); llWhisper(0, "Running test " + (string) current_test + ": " + req + " " + name + " " + (string) ret + " " + "\"" + data + "\""); http_key = llHTTPRequest(site + name, [ HTTP_METHOD, req ], data); } default { state_entry() { llWhisper(0, "Running " + (string) (llGetListLength(tests) / 4) + " tests.\n"); current_test = 0; failures = 0; warnings = 0; run_test(); } http_response(key req, integer status, list meta, string content) { if (req != http_key) { llWhisper(0, "Unexpected HTTP response."); ++warnings; return; } list test = llList2List(tests, current_test * 4, (current_test * 4) + 4); string req = llList2String(test, 0); string name = llList2String(test, 1); integer ret = llList2Integer(test, 2); string data = llList2String(test, 3); if (status != ret) { llWhisper(0, "Fail test " + (string) current_test + ": Expected status " + (string) ret + " but got " + (string) status); ++failures; } else if (req == "GET" && ret == 200 && content != data) { llWhisper(0, "Fail test " + (string) current_test + ": Expected return '" + data + "' but got '" + content + "'"); ++failures; } else { llWhisper(0, "Pass test " + (string) current_test); } ++current_test; run_test(); } }
Anari Demme | ViewVC Help |
Powered by ViewVC 1.0.5 |